import { getToken } from '@/auth';
import axios from 'axios';

// 创建axios实例
const service = axios.create({
  baseURL: import.meta.env.VUE_APP_BASE_API || '/api',
  timeout: 5000 // 请求超时时间
});

// 请求拦截器
service.interceptors.request.use(
  (config) => {
    // 跳过注册接口的认证头
    if (!config.url.includes('/auth/register')) {
      const token = getToken();
      if (token) {
        config.headers['Authorization'] = `Bearer ${token}`;
      }
    }
    
    // 动态设置 Content-Type
    if (!config.headers['Content-Type']) {
      config.headers['Content-Type'] = 'application/json';
    }
    
    return config;
  },
  (error) => {
    console.error('Request Error:', error);
    return Promise.reject(error);
  }
);

// 响应拦截器
service.interceptors.response.use(
  (response) => {
    // 仅处理成功状态码
    if (response.status >= 200 && response.status < 300) {
      return response.data;
    }
    return Promise.reject(response.data);
  },
  (error) => {
    console.error('Response Error:', error);
    
    // 统一错误处理
    let errorMessage = '请求失败';
    if (error.response) {
      // 从响应中提取错误信息
      errorMessage = error.response.data?.message || 
                    error.response.statusText || 
                    `HTTP ${error.response.status}`;
    }
    
    return Promise.reject(errorMessage);
  }
);

export default service;
